package com.literaryfamily.literaryfamily.service.user.msg;

import com.literaryfamily.literaryfamily.entity.UserAddress;

import java.util.List;

/**
 * 所有涉及读写的方法都需要抛出 WriteError 数据库读写错误异常(这个是运行时异常,只需要抛出不需要处理)
 * 此接口所有方法均不检查用户身份,应该验证身份后在进行检查
 *
 * @author 滑稽/因果报应
 */
public interface AddressService {
    /**
     * 添加用户地址
     *
     * @param dto 完整的地址信息(包含用户id)
     * @return 添加后的信息
     */
    UserAddress addAddress(UserAddress dto);

    /**
     * 更新用户地址
     *
     * @param dto 完整的地址信息(包含用户id)
     * @return 更新后的信息
     */
    UserAddress updateAddress(UserAddress dto);

    /**
     * 删除用户地址
     *
     * @param addressId 地址信息id
     * @return 删除结果
     */
    UserAddress deleteAddress(Long addressId);

    /**
     * 获取某个用户所有的地址信息
     *
     * @param userId 需要获取信息的用户
     * @return 所有地址信息
     */
    List<UserAddress> getUserAllAddr(Long userId);

    /**
     * 设置默认地址
     *
     * @param addressId 地址ID
     * @return 设置结果
     */
    UserAddress setDefaultAddress(Long addressId);

    /**
     * 获取默认地址,由于一个用户只有一个默认地址我在用户表里面添加了默认地址字段
     *
     * @param userId 用户ID
     * @return 默认地址
     */
    UserAddress getDefaultAddress(Long userId);
}